package com.redepronik.negosys.rrhh.service;

import java.io.Serializable;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.redepronik.negosys.rrhh.dao.CiudadDao;
import com.redepronik.negosys.rrhh.entity.Ciudad;
import com.redepronik.negosys.rrhh.entity.Provincia;

@Service
public class CiudadServiceImpl implements CiudadService, Serializable {

	private static final long serialVersionUID = 1L;

	@Autowired
	private CiudadDao ciudadDao;

	public String actualizar(Ciudad ciudad) {
		if (!ciudadDao.comprobarIndices(Ciudad.class, "nombre",
				ciudad.getNombre(), String.valueOf(ciudad.getCiudadid()))) {
			ciudadDao.actualizar(ciudad);
			return "SAVE";
		} else
			return "EXISTE";
	}

	public void eliminar(Ciudad ciudad) {
		if (ciudad.getActivo())
			ciudad.setActivo(false);
		else
			ciudad.setActivo(true);
		ciudadDao.actualizar(ciudad);
	}

	public String insertar(Ciudad ciudad) {
		if (!ciudadDao.comprobarIndices(Ciudad.class, "nombre",
				ciudad.getNombre(), String.valueOf(ciudad.getCiudadid()))) {
			ciudad.setActivo(true);
			ciudadDao.insertar(ciudad);
			return "SAVE";
		} else
			return "EXISTE";
	}

	public List<Ciudad> obtener(Boolean activo) {
		return ciudadDao.obtener(Ciudad.class, "nombre", activo);
	}

	public Ciudad obtenerPorCiudadId(int ciudadId) {
		return ciudadDao.obtenerPorId(Ciudad.class, ciudadId);
	}

	public List<Ciudad> obtenerPorProvincia(Provincia provincia) {
		if (provincia.getProvinciaid() != null
				|| provincia.getProvinciaid() != 0)
			return ciudadDao
					.obtenerPorHql(
							"select c from Ciudad c inner join fetch c.provincia p where p.provinciaid=?1",
							new Object[] { provincia.getProvinciaid() });
		else
			return null;
	}
}